home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / usb_gadgetfs.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  76 lines

  1.  
  2. #include <asm/types.h>
  3. #include <asm/ioctl.h>
  4.  
  5. #include <linux/usb_ch9.h>
  6.  
  7. /*
  8.  * Filesystem based user-mode API to USB Gadget controller hardware
  9.  *
  10.  * Almost everything can be done with only read and write operations,
  11.  * on endpoint files found in one directory.  They are configured by
  12.  * writing descriptors, and then may be used for normal stream style
  13.  * i/o requests.  When ep0 is configured, the device can enumerate;
  14.  * when it's closed, the device disconnects from usb.
  15.  *
  16.  * Configuration and device descriptors get written to /dev/gadget/$CHIP,
  17.  * which may then be used to read usb_gadgetfs_event structs.  The driver
  18.  * may activate endpoints as it handles SET_CONFIGURATION setup events,
  19.  * or earlier; writing endpoint descriptors to /dev/gadget/$ENDPOINT
  20.  * then performing data transfers by reading or writing.
  21.  */
  22.  
  23. /*
  24.  * Events are delivered on the ep0 file descriptor, if the user mode driver
  25.  * reads from this file descriptor after writing the descriptors.  Don't
  26.  * stop polling this descriptor, if you write that kind of driver.
  27.  */
  28.  
  29. enum usb_gadgetfs_event_type {
  30.     GADGETFS_NOP = 0,
  31.  
  32.     GADGETFS_CONNECT,
  33.     GADGETFS_DISCONNECT,
  34.     GADGETFS_SETUP,
  35.     GADGETFS_SUSPEND,
  36.     // and likely more !
  37. };
  38.  
  39. struct usb_gadgetfs_event {
  40.     enum usb_gadgetfs_event_type    type;
  41.     union {
  42.         // NOP, DISCONNECT, SUSPEND: nothing
  43.         // ... some hardware can't report disconnection
  44.  
  45.         // CONNECT: just the speed
  46.         enum usb_device_speed    speed;
  47.  
  48.         // SETUP: packet; DATA phase i/o precedes next event
  49.         // (setup.bmRequestType & USB_DIR_IN) flags direction 
  50.         // ... includes SET_CONFIGURATION, SET_INTERFACE
  51.         struct usb_ctrlrequest    setup;
  52.     } u;
  53. };
  54.  
  55.  
  56. /* endpoint ioctls */
  57.  
  58. /* IN transfers may be reported to the gadget driver as complete
  59.  *     when the fifo is loaded, before the host reads the data;
  60.  * OUT transfers may be reported to the host's "client" driver as
  61.  *     complete when they're sitting in the FIFO unread.
  62.  * THIS returns how many bytes are "unclaimed" in the endpoint fifo
  63.  * (needed for precise fault handling, when the hardware allows it)
  64.  */
  65. #define    GADGETFS_FIFO_STATUS    _IO('g',1)
  66.  
  67. /* discards any unclaimed data in the fifo. */
  68. #define    GADGETFS_FIFO_FLUSH    _IO('g',2)
  69.  
  70. /* resets endpoint halt+toggle; used to implement set_interface.
  71.  * some hardware (like pxa2xx) can't support this.
  72.  */
  73. #define    GADGETFS_CLEAR_HALT    _IO('g',3)
  74.  
  75.  
  76.